// const mongoose = require("mongoose");
// 引入转发包
const rp = require("request-promise");
// 内置模块 file-system 文件系统
const fs = require("fs");
// path解析文件路径 内置文件
const path = require('path');
const util = require("util");
// fs.unlink方法可以删除静态资源，参数为需要删除资源在电脑上的绝对路径
const unlink = util.promisify(fs.unlink);
const baseUrl = "http://localhost:3001";
const upload = async data => {
    const { _id, url } = data;
    console.log(data);
    var options = {
        method: 'PATCH',
        uri: `${baseUrl}/product/${_id}`,
        body: {
            $push: {
                image: url,
            }
        },
        json: true // Automatically stringifies the body to JSON
    };
    try {
        return await rp(options);
    } catch (error) {
        return error;
    }
};

const deleteImg = async ({ _id, url }) => {
    // 删除在资源服务器的图片
    // __dirname全局对象 显示当前文件绝对路径
    // C:\Users\86187\Desktop\F76\resource-app\routes
    const routesPath = path.resolve(__dirname, "../public");
    const imgUrl = path.join(routesPath, url);  // join拼接
    await unlink(imgUrl); //删除图片（绝对路径）

    // 解除关联数据
    var options = {
        method: 'DELETE',
        uri: `${baseUrl}/upload/${_id}/imgs/${encodeURIComponent(url)}`,
        json: true // Automatically stringifies the body to JSON
    };
    //如果try正常，正常执行返回值，如果错误，则把错误返回回去
    try {
        // rp转发并 返回返回值
        return await rp(options)
    } catch (error) {
        return error;
    }
}

const deletePoster = async ({ _id, url }) => {
    // 删除在资源服务器的图片
    // __dirname全局对象 显示当前文件绝对路径
    // C:\Users\86187\Desktop\F76\resource-app\routes
    const routesPath = path.resolve(__dirname, "../public");
    const imgUrl = path.join(routesPath, url);  // join拼接
    await unlink(imgUrl); //删除图片（绝对路径）

    // 解除关联数据
    var options = {
        method: 'DELETE',
        uri: `${baseUrl}/upload/${_id}/imgs/${encodeURIComponent(url)}`,
        json: true // Automatically stringifies the body to JSON
    };
    //如果try正常，正常执行返回值，如果错误，则把错误返回回去
    try {
        // rp转发并 返回返回值
        return await rp(options)
    } catch (error) {
        return error;
    }
}

module.exports = { upload, deleteImg,deletePoster };